お題自由な学校のレポート課題1内で, ショアのアルゴリズムを説明するために QFT の概要について示したのだが, 折角なのでその内容の一部を抜粋し, こちらのブログのほうにも載せておくことにした. ショアのアルゴリズムについては, 調べればいくらでも出てくるし, 学会誌, 書籍等で分かり易く述べられていることも多いので, 本エントリで特別取り上げることはしないが, その大体は以下のアクティビティ図の手順の通りである2.
なお, 私自身は量子力学, 量子コンピュータ分野における専門家ではないため, 注意してください. 間違った箇所, 不自然な箇所等ございましたら, ご報告いただけると幸いです.
まず, DFT を次のようにおく3. F(t)=n−1∑x=0f(x)exp(−j2πtxn)
ここで, f(x) は入力の関数, j は虚数単位である. QFT は, 正規化係数を 1√n とした有限次元内積空間内における正規直交基底 |0⟩,⋯,|n−1⟩ 上の状態,
n−1∑x=0f(x)|x⟩
の各係数となる複素関数の値を離散フーリエ変換したものであるといえる.
すなわち, 式 (1) の定義をふまえて,
n−1∑x=0f(x)|x⟩↦n−1∑i=0F(i)|i⟩
または,
|x⟩↦1√nn−1∑k=0exp(−j2πxkn)|k⟩
と表すことができ, いま m Qubit があるならば, 扱えるデータ数は 2m となるため
|x⟩↦1√2m2m−1∑k=0exp(−j2πxk2m)|k⟩
と表せる. これを量子回路として実装していく. 結論から言うと, この量子回路は, アダマールゲートと,
制御ビットが 1 のときのみ, 信号量子ビットの位相を exp(j2π2k+1) だけシフトする
制御位相シフトゲートを利用することで実現できる.
次に, 2 Qubit を用いた QFT の量子回路図を示す4.
ここで |q1⟩ は |0⟩+exp(jπq1)|1⟩→|0⟩+exp(jπ2(2q1+q0))|1⟩
と変化し,
|q0⟩ は |0⟩+exp(jπq0)|1⟩
と変化することがいえる.
いま, 式 (2) の結果を |a0⟩,
式 (3) の結果を |a1⟩ としたとき
|a1⟩|a0⟩={|0⟩+exp(jπq0)|1⟩}{|0⟩+exp(jπq1+jπq02)|1⟩}
がいえる. ここで, q および a の値の 2 進表記をそれぞれ [q1,q0], [a1,a0] とすると, q=2q1+q0, a=2a1+a0 であるので式 (4) は,
|a⟩=|0⟩+exp(jπ2q)|1⟩+exp(jπ2q×2)|2⟩+exp(jπ2q×3)|3⟩
と展開できる. |a⟩ の各状態の係数が |q⟩ の各状態の係数のフーリエ変換になっていることがわかる.